/*
 *功能：UDP聊天室客户端
 *作者：隔壁老王
 */
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<signal.h>
int main(int argc, const char *argv[])
{
	int sockfd;
	char buffer[512]={0};
	struct sockaddr_in serveraddr;
	socklen_t len=sizeof(struct sockaddr);
	pid_t pid;
	if(argc != 3)
	{
		printf("user : %s ip port",argv[0]);
		return -1;
	}
	sockfd = socket(AF_INET,SOCK_DGRAM,0);//创建socket套接字
	if(sockfd <0)
	{
		perror("socket err");
		exit(-1);
	}
	//指定服务器地址
	bzero(&serveraddr,len);
	serveraddr.sin_family = AF_INET;
	serveraddr.sin_port = htons(atoi(argv[2]));
	serveraddr.sin_addr.s_addr = inet_addr(argv[1]);
	pid = fork();
	if(pid<0)
	{
		perror("error of fork");
		exit(-1);
	}
	else if(pid == 0)//子进程  发送消息给服务器
	{
		while(1)
		{
		fgets(buffer,sizeof(buffer),stdin);
		sendto(sockfd,buffer,sizeof(buffer),0,(struct sockaddr *)&serveraddr,len);
		}
	}
	else//父进程  从服务器接受消息并打印
	{
		while(1)
		{
			recvfrom(sockfd,buffer,sizeof(buffer), 0, (struct sockaddr *)&serveraddr, &len);
			puts(buffer);
		 	
		}
	}
	return 0;
}
